Computer-based multimedia systems bring together a number of hardware and software tools with a common goal; creating a cohesive interactive environment that involves the human senses, especially sight and sound. Multimedia simply means using several communications sources simultaneously. Computer-based multimedia systems require the integration of a number of sophisticated functions or capabilities that can provide both sound and animation. The level of this functionality requires, in most cases, substantial or dedicated use of key system resources, such as memory and direct memory access circuitry. The management, allocation, and use of these key system facilities significantly affect the performance and cost of the systems required to support such an application.
Applications involving computer-based sound reproduction are some of the more demanding functions of a multimedia system. A typical way to meet these demands is shown in FIG. 1. A computer system with a Graphics Display (100), a Video Display Memory (101), and a Video Graphics Adapter (102) is supplemented with an Audio Subsystem, which includes a dedicated add-in adapter card that contains Multimedia Audio Controller (103), a Speaker or Headphones (104) and a Microphone (105). The Video Graphics Adapter (102) and Multimedia Audio Controller (103) each include Host Bus Interfaces, (106) and (107) respectively, that connect to the Host CPU Bus (109). Additionally, Multimedia Audio Controller (103) typically includes a DMA interface (108), for direct memory access to Memory (110) via Host CPU (111).
An audio codec such as shown in FIG. 1 contains both digital-to-analog and analog-to-digital converters, which provides the ability to transform audio from an input transducer like a Microphone (105) into its digital form for storage in a disk file and then transform it back to its analog form to an output transducer, for example, Speaker or Headphones (104). However, as higher levels of IC integration are achieved, it becomes desirable to combine functions. Thus, there is a need to have a combined and simplified system architecture that supports both audio and video graphics.
The first level of audio subsystem performance has sample rates ranging from 11 KHz to 22 KHz, with each sample having eight bits of resolution. This is sufficient for speech and some forms of music. The next level of audio-subsystem performance supports CD-quality sound, with sample rates of 44.1 KHz and sixteen-bit-per-sample resolution. CD-quality audio subsystem performance requires a more specialized and sophisticated digital audio subsystem.
At the center of many audio subsystems is a single chip containing both analog-to-digital and digital-to-analog converters such as an Audio Codec (112). Today's Audio Codecs are designed with either serial or eight-bit parallel interfaces. Depending on which type, these controllers require varying degrees of additional support components and host system resources. Specifically, in ISA-based systems like the IBM PC/AT, the codec-audio controller must have 1) the use of a DMA channel that is programmed to transfer data between the controller and memory, 2) bus control and address decode logic, and 3) a portion of system memory reserved for use as audio data buffers. Thus, these audio subsystems are totally dependent on the availability of memory and DMA system facilities, which in turn, govern the performance and throughput of computer-based sound for multimedia application.
One problem of computer-based audio is to service data transfer requests between Multimedia Audio Controller (103) and Memory (110), or between different areas of Memory (110)on a timely basis. This problem is particularly challenging given the frequency and the manner in which these transfers occur. Typically, a PC-based or equivalent system has a set of programmable DMA channels, each with either a eight- or sixteen-bit data path--but these are, in general, considered rather slow to respond to a new data transfer request. Each time a DMA data transfer occurs, the host CPU is put into a hold state. Once the transfer has been completed the CPU is then released. In order to service an audio subsystem effectively, Multimedia Audio Controller (103) must include a DMA interface (108) and a DMA channel in host CPU (111) that is set up to service data transfers at speeds equivalent to the audio sampling rate. For example, at a sample rate of 44.1 Khz, the DMA channel must service these requests every 22 usec. If another system request or operation takes longer than 22 usec to execute before it can be stopped by a pending DMA request, the audio controller will miss the transfer and either recording errors or playback noise pops will occur. Thus, there is a need for an approach to service audio data transfer requests in a computer system in a timely fashion.
A related problem is that while a typical tape recorder can only either play or record at any one time, many multimedia applications require more involvement and interaction. Even an ordinary phone call, for example, is a full-duplex process in that both recording or speaking, and playback or listening occur simultaneously. DMA channels in a typical computer system are uni-directional. Thus, full-duplex record and playback requires using two sequential DMA transfer requests over a single DMA channel, unless one DMA channel is dedicated to audio recording and a second DMA channel is dedicated to audio playback. If two DMA channels are dedicated to sound reproduction, then the available DMA resources (which is only a few channels in a typical PC-like system) are substantially occupied by sound reproduction, thus drastically reducing the overall throughput and performance of the system on other tasks. Therefore, there is a need to support full duplex sound reproduction without excessively consuming the resources of the host computer system.
Another problem of computer-based audio is to efficiently allocate and use memory for codec-based audio applications. The prior-art solution to this problem is to take the buffer space required to properly support the application from available portions of Memory (110). In this case, the operating system, by means of its memory manager, is responsible for managing and allocating these dedicated buffers. When an application begins execution, the operating system looks at the memory map to determine where to place that application. It then finds and allocates the appropriate amount of memory to run that application. When buffer space is requested, the operating system, once again, is responsible to make it available from what memory space remains. The time it takes the operating system to service such requests coupled with the latency, caused by system bus to service data transfers, can be excessive. Once again, this has a similar result, specifically, poor audio record or playback performance.
A second prior-art solution to the memory-allocation problem incorporates adequate memory buffers into Multimedia Audio Controller (103) that are specifically dedicated to audio reproduction. Even though this solution alleviates the problem, it adds significant costs and complexity to manufacture and test such a computer-based audio system. Thus, there is a need for an approach that efficiently allocates and uses memory within a computer system for audio data.
Another problem of computer-based audio recording is to efficiently allocate and use memory and Host CPU time for audio applications, such as voice response, where it is desired to take some action, or to activate sound recording, only when the level of sound being observed by microphone (105) exceeds a particular threshold. One prior-art solution to this problem is for Multimedia Audio Controller (103) to simply discard all audio samples prior to the first sample that exceeds this threshold. An advantage of this approach is that Memory (110) is not used to store any apparently irrelevant audio samples, but system bandwidth is still used to check the data. For applications such as speech recognition, however, if the threshold is set high enough that all background noise softer than a word is discarded, then the samples that immediately proceed the first over-threshold sample may in fact contain information that would aid the recognition of that word. In such cases, speech recognition software executing on Host CPU (111) must lower the threshold that it sets for Multimedia Audio Controller (103). But this, in turn, means that Multimedia Audio Controller (103) sometimes starts the recording process due to background noise, which it passes on to Memory (110), and which subsequently the speech recognition software analyzes as a possible word. This needlessly consumes buffer space for audio samples within Memory (110), as well as bandwidth on Host CPU bus (109). Thus, there is a need for an approach that allows the start-recording threshold to be set high enough to filter noise without losing useful samples.